package org.jiuling.kuaidi100.model.enums;

/**
 * 物流状态
 * @author 紫灵
 * @date 2024年02月28日 01时48分00秒
 */
public enum ExpressStateEnum {

    COLLECT(1,"揽收","快件揽件"),
    PLACED_AN_ORDER(101,"已下单","已经下快件单"),
    AWAIT_COLLECT(102,"待揽收","待快递公司揽收"),
    ALREADY_COLLECT(103,"已揽收","快递公司已经揽收"),
    IN_TRANSIT(0,"在途","快件在途中"),
    ARRIVE_DELIVERY_CITY(1001,"到达派件城市","快件到达收件人城市"),
    TRUNK_MOVEMENT(1002,"干线","快件处于运输过程中"),
    FORWARDED(1003,"转递","快件发往到新的收件地址"),
    DELIVERY(5,"派件","快件正在派件"),
    COURIER_STATION(501,"投柜或驿站","快件已经投递到快递柜或者快递驿站"),
    SIGN_FOR(3,"签收","快件已签收"),
    SELF_SIGN_FOR(301,"本人签收","收件人正常签收"),
    DELIVERY_EXCEPTION_SIGN_FOR(302,"派件异常后签收","快件显示派件异常，但后续正常签收"),
    ALLOGRAPH(303,"代签","快件已被代签"),
    COURIER_STATION_SIGN_FOR(304,"投柜或站签收","快件已从快递柜或者驿站取出签收"),
    SEND_BACK(6,"退回","快件正处于返回发货人的途中"),
    SEND_BACK_SIGN_FOR(4,"退签","此快件单已退签"),
    REVOKED(401,"已销单","此快件单已撤销"),
    VISA_REJECTED(14,"拒签","收件人拒签快件"),
    TRANSITION_DELIVER(7,"转投","快件转给其他快递公司邮寄"),
    DIFFICULT(2,"疑难","快件存在疑难"),
    TIMEOUT_UNSIGNED(201,"超时未签收","快件长时间派件后未签收"),
    TIMEOUT_NOT_UPDATED(202,"超时未更新","快件长时间没有派件或签收"),
    REJECTION(203,"拒收","收件人发起拒收快递,待发货方确认"),
    DELIVERY_EXCEPTION(204,"派件异常","快件派件时遇到异常情况"),
    COURIER_STATION_TIMEOUT_UNFETTERED(205,"柜或驿站超时未取","快件在快递柜或者驿站长时间未取"),
    CAN_NOT_CONTACT(206,"无法联系","无法联系到收件人"),
    SUPERZONE(207,"超区","超出快递公司的服务区范围"),
    RETENTION(208,"滞留","快件滞留在网点，没有派送"),
    DAMAGED(209,"破损","快件破损"),
    CANCEL(210,"销单","寄件人申请撤销寄件"),
    CUSTOMS_CLEARANCE(8,"清关","快件清关"),
    AWAIT_CUSTOMS_CLEARANCE(10,"待清关","快件等待清关"),
    CUSTOMS_CLEARANCE_ING(11,"清关中","快件正在清关流程中"),
    ALREADY_CUSTOMS_CLEARANCE(12,"已清关","快件已完成清关流程"),
    CUSTOMS_CLEARANCE_EXCEPTION(13,"清关异常","货物在清关过程中出现异常");

    /** 值 */
    private int value;
    /** 名称 */
    private String name;
    /** 含义 */
    private String meaning;

    public int getValue() {
        return value;
    }

    public String getName() {
        return name;
    }

    public String getMeaning() {
        return meaning;
    }

    ExpressStateEnum(int value, String name, String meaning) {
        this.value = value;
        this.name = name;
        this.meaning = meaning;
    }
}
